package io;

import java.io.FileInputStream;
import java.io.IOException;

/**
 * 使用文件输入流从文件中读取字节码
 */
public class FIDemo {
    public static void main(String[] args) throws IOException {
   /*
            1byte   8位2进制
            00000000
            11111111        256种组合

            00000000   0
            00000001   1      128种组合
            01111111   127

            11111111  -1
            11111110  -2      128种组合
            11111101  -3
            10000000  -128

            short
            00000000 00000000    0
            11111111 11111111    -1

            int
            00000000 00000000 00000000 00000000    0    40多亿种组合
            01111111 11111111 11111111 11111111   正数最大值
            11111111 11111111 11111111 11111111    -1
            10000000 00000000 00000000 00000000   负数最小值
         */

        FileInputStream fis = new FileInputStream("fos.dat");
        /*
            InputStream上定义了读取一个字节的方法:
            int read()
            读取一个字节并以int型返回，返回的int值只有"低八位"有效，是实际读取到的
            1字节数据。如果返回值为int型整数-1则表示流读取到了末尾

            fos.dat文件数据
            00000001 00000010
            ---------------------------------------
            第一次调用:
            int d = fis.read();
            fos.dat文件数据
            00000001 00000010
            ^^^^^^^^
            读取的字节

            d:00000000 00000000 00000000 00000001
              |-------自动补24个0--------|读取的字节
         */
        int d = fis.read();//1
        System.out.println(d);
         /*
            ---------------------------------------
            第二次调用:
            int d = fis.read();
            fos.dat文件数据
            00000001 00000010
                     ^^^^^^^^
                     读取的字节

            d:00000000 00000000 00000000 00000010
              |-------自动补24个0--------|读取的字节
         */
        d = fis.read();//2
        System.out.println(d);
        /*
            ---------------------------------------
            第三次调用:
            int d = fis.read();
            fos.dat文件数据
            00000001 00000010
                              ^^^^^^^^
                              文件末尾了

            d:11111111 11111111 11111111 11111111

         */
        d = fis.read();//-1
        System.out.println(d);

        fis.close();

    }
}
